package cn.wolfcode.shop.cloud.service;


import cn.wolfcode.shop.cloud.domain.OrderInfo;

/**
 * Created by wolfcode-lanxw
 */
public interface IOrderInfoService {
    /**
     * 秒杀方法
     * @param seckillId
     * @param uuid
     * @param token
     * @param random
     * @return
     */
    void doSeckill(Long seckillId, String uuid, String token, String random);

    /**
     * 异步下单接口
     * @param seckillId
     * @param userId
     * @return
     */
    String seckillOrder(Long seckillId, Long userId);

    /**
     * 根据订单编号查询订单对象
     * @param orderNo
     * @param token
     * @return
     */
    OrderInfo findById(String orderNo, String token);

    /**
     * 检查订单是否已超时
     * @param orderNo
     * @param seckillId
     */
    void checkTimeout(String orderNo, Long seckillId);

    /**
     * 处理订单创建失败逻辑
     * @param seckillId
     * @param userId
     */
    void handleFailed(Long seckillId, Long userId);

    /**
     * 支付成功业务处理
     * @param orderNo
     */
    void paySuccess(String orderNo);
}
